package com.leetcode;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

@Slf4j
public class LeetCode78 {
    public List<List<Integer>> subsets(int[] nums) {
        List<List<Integer>> res = new ArrayList<>();
        List<Integer> temp = new ArrayList<>();
        res.add(temp);
        for (int i = 0; i < nums.length ; i++) {
            int size = res.size();
            for (int j = 0; j < size ; j++) {
                List<Integer> temp1 = new ArrayList<>();
                List<Integer> integers = res.get(j);
                temp1.addAll(integers);
                temp1.add(nums[i]);
                res.add(temp1);
            }
        }
        return res;
    }


    public void aaa(int[] nums,List<List<Integer>> res){
        int size = 1;
        while (size <= nums.length){
            int index = 0;
            List<Integer> temps = new ArrayList<>(size);
            while (index < size){
                temps.add(nums[index]);
                index++;
            }
            res.add(temps);
            size++;
        }
        log.info("test");
    }

    public void bbb(int[] nums,List<List<Integer>> res,int size){
        int start = 0;
        for (List<Integer> value : res ){
           if (value.size() == 0){
               List<Integer> temps = new ArrayList<>();
               res.add(temps);
               start++;
           }else if (value.size() == start){
               for (int i = start-1; i < nums.length ; i++) {

               }
               List<Integer> temps = new ArrayList<>();
               temps.addAll(value);
           }
       }
    }

    public void ccc(int[] nums,List<List<Integer>> res){
        if (res.size()==0){
            List<Integer> temps = new ArrayList<>();
            res.add(temps);
        }

        for (int i = 0; i < res.size() ; i++) {
            List<Integer> integers = res.get(i);
            int index = i;
            while (index < nums.length){
                List<Integer> temps = new ArrayList<>();
                temps.addAll(integers);
                temps.add(nums[index]);
                integers = temps;
                res.add(temps);
                index++;
            }
        }

        log.info("test");
    }



    @Test
    public void test(){
        List<List<Integer>> res = new ArrayList<>();
        int[] nums = {1,2,3,4,5};
        subsets(nums);
       log.info("this is test");
    }
}
